package com.example.spider.provider.why10w;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * 处理 why10w 内容，初始化密钥，生产TS任务，合并任务
 *
 * 任务爬取结果，爬虫幂等使用，dir/{source}/{id}.html(option)
 * 任务解析结果，任务解析跳过使用，dir/{source}/{id}.json(option)
 * 所有why10w任务聚合结果 dir/mergedResul.json
 *
 * source=网站别名
 *
 * @author lym
 */
@Slf4j
@Component
public class Why10wFileNameTemplate implements InitializingBean {

    @Value("${spider.why10w.storage.dir:${user.home}/spider/why10w}")
    private String storageDir;

    @Value("${spider.why10w.storage.mergedResultFile:{storageDir}/why10wResult.json}")
    private String mergedResultFile;

    @Value("${spider.why10w.storage.htmlFileNameTemplate:{storageDir}/{source}/{id}.html}")
    private String spiderResultFileNameTemplate;

    @Value("${spider.why10w.storage.parsedResultFileNameTemplate:{storageDir}/{source}/{id}.json}")
    private String parsedResultFileNameTemplate;


    @Override
    public void afterPropertiesSet() {
        mergedResultFile = mergedResultFile.replace("{storageDir}", storageDir);
        spiderResultFileNameTemplate = spiderResultFileNameTemplate.replace("{storageDir}", storageDir);
        parsedResultFileNameTemplate = parsedResultFileNameTemplate.replace("{storageDir}", storageDir);
    }

    public String getStorageDir() {
        return storageDir;
    }
    public String getMergedResultFile() {
        return mergedResultFile;
    }

    public String calculateParsedResultFileName(String source, String id) {
        return parsedResultFileNameTemplate
                .replace("{source}", source)
                .replace("{id}", id)
                ;
    }

    public String calculateHtmlFileName(String source, String id) {
        return spiderResultFileNameTemplate
                .replace("{source}", source)
                .replace("{id}", id)
                ;
    }

}
